#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<cwindow.h>
int hig,width;
int ball_x,ball_y; 
int ball_vx,ball_vy;
int position_x,position_y;
int ridus;
int left,right;
void gotoxy(int x,inty)
{
	HANDLE handle =  GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(handle,pos);
}
void startup()
{
	high = 15;
	width = 20;
	ball_x = 0;
	ball_y = width/2;
	ball_vx = 1;
	ball_vy = 1;
	ridus = 5;
	position_x = high;
	position_y = width/2;
	left = position_y - ridus;
	right = position_y + ridus;
 } 
 
 void show()
 {
 	gotoxy(0,0);
 	int i,j;
 	for(i=1;i<=high+1;i++)
 	{
 		for(j=0;j<=width;j++)
 		{
 			if((i==ball_x)&&(j==ball_y))
 			printf("0");
 			else if(j==width)
 			printf("|");
 			else if(i==high+1)
 			printf("-");
 			else if((i==hihg)&&(j>=left)&&(j<=right))
 			printf("*");
 			else
 			printf(" ");
		 }
		 printf("\n");
	 }
 }
 
 void updateWithoutInput()
 {
 	ball_x=ball_x+ball_vx;
 	ball_y=ball_y+ball_vy;
 	if((ball_x==0)||(ball_x==high-1))
 	ball_vx=-ball_vx;
 	if((ball_y==0)||(ball_y==width-1))
 	ball_vy = -ball_vy;
 	sleep(50);
 }
 
 void updateWithInput()
 {
 	char input;
 	if(kbhiy())
 	{
 		input = getch();
 		if(input == 'a')
 		{
 			position_y--;
 			left = position_y - ridus;
 			right = position_y + ridus;	
		 }
		 if(input =='d')
		 {
		 	position_y++;
		 	left = position_y - ridus;
		 	right = position_y + ridus;
        }
	 }
 }

int main()
{
	startup()
	while(1);
	{
		show();
		updateWithoutInput();
		updateWithInput();
	}
	return 0;
}
